/*写一个 RecentCounter 类来计算特定时间范围内最近的请求。
* 请你实现 RecentCounter 类：
* RecentCounter() 初始化计数器，请求数为 0 。
* int ping(int t) 在时间 t 添加一个新请求，其中 t 表示以毫秒为单位的某个时间，
* 并返回过去 3000 毫秒内发生的所有请求数（包括新请求）。确切地说，返回在 [t-3000, t] 内发生的请求数。
* 保证 每次对 ping 的调用都使用比之前更大的 t 值。
*
* 输入：
* ["RecentCounter", "ping", "ping", "ping", "ping"]
* [[], [1], [100], [3001], [3002]]
* 输出：
* [null, 1, 2, 3, 3]
* */


package newcoder.Queue_4;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;

class RecentCounter{

    Queue q;
    public RecentCounter(){
        q = new LinkedList();
    }

    public int ping(int t){
        q.add(t);
        while ((int)(q.peek()) < (t - 3000)){
            q.poll();
        }
        return q.size();
    }
}

public class Leetcode933 {

    public static void main(String[] args) {

        RecentCounter obj = new RecentCounter();
        String[] str = new String[]{"RecentCounter", "ping", "ping", "ping", "ping"};
        int[][] t = new int[][]{{}, {1}, {100}, {3001}, {3002}};
        String[] resv = new String[t.length];
        resv[0] = "null";
        for (int i = 1;i < t.length;i++){

            resv[i] = Integer.toString(obj.ping(t[i][0]));
        }
        System.out.println(Arrays.toString(resv));
    }
}
